<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //默认构建的set的空集合
        var set=new Set();
        console.log(set);

        // Set构造函数会自动的将传入进来的数据转换为集合
        var set2=new Set([1,2,3,4,5]);
        console.log(set2);

        var str="abcdef";
        var set3=new Set(str);
        console.log(set3);


        //1.去重，set集合在元素构成中，必须保证每个元素都是唯一的
        var set4=new Set(["alice","baby","alice","baby","cici","lili"]);
        var arrs=Array.from(set4);//将set集合转换为数组
        console.log(arrs);

        // 2.set的属性和方法
        // size ：返回Set 实例的成员(元素)总数。
        // add(value) ：添加某个值，返回 Set 结构本身。
        // delete(value) ：删除某个值，返回一个布尔值，表示删除是否  成功。
        // has(value) ：返回一个布尔值，表示该值是否为Set 的成员。
        // clear() ：清除所有成员，没有返回值。

        var set5=new Set([1,2,3,4,5,1,2,3,5,4]);
        console.log(set5);
        console.log("元素数量："+set5.size);
        var set6=new Set();
        //add方法，向set集合中添加数据，同样会完成重复数据被剔除的操作
        var user={name:"alice"};
        set6.add("元素1");
        set6.add("元素2");
        set6.add("元素2");
        set6.add("alice");
        set6.add("cici");
        set6.add([1,2,3]);
        set6.add([1,2,3]);
        set6.add(user);
        set6.add(user);
        // delete方法，删除某个值，返回一个布尔值，表示删除是否成功
        console.log(set6.delete("元素2"));
        console.log(set6.delete([1,2,3]));
        // console.log(set6.delete(user));

        // has(value) ：返回一个布尔值，表示该值是否为Set 的成员。
        console.log(set6.has("alice"));//true
        console.log(set6.has(user));

        // clear() ：清除所有成员，没有返回值。
        set6.clear();
        
        console.log(set6);
        
       
    </script>
</head>
<body>
    
</body>
</html>